目前,我正在使用Decorator模式编写一个示例。我的当前代码如下:
abstract class LibraryItem
{
private int _numCopies;
// Property
public int NumCopies
{
get { return _numCopies; }
set { _numCopies = value; }
}
public abstract void Display();
}
我有以下接口及其实现:
public interface IService
{
}
public class Service1 : IService
{
}
public class DecoratedService
{
public DecoratedService(IService inner)
{
}
}
Service1注册在我无法更改的代码中(未命名注册):
builder.RegisterType<Service1>().As<IService>();
所以我需要用我自己的方式来装饰这张挂号。如何以最小的性能影响实现这一目标?
公
毫无疑问,装饰器模式是增强类中某些不能(或不应该)继承旧方法的方法的很好且简单的标准,就像C#中的这个例子(我没有使用接口(我应该)来使其尽可能简短)。
using System;
class Human { ... }
class Father {
public string Info() {
return "John";
}
}
class Son : Human { // decorating Father
Father f = new Father();
public string Info() {
我有一个具有Authorize属性的api方法,用于检查权限 [Authorize(ReadIndexes)]
public async Task<IActionResult> GetIndexes ()
{
...
} 有没有一种等效的方法来修饰一个方法来检查Angular中的权限,这样如果权限不存在,api调用就不会执行 ##????##
getIndexes(): Observable<Index[]> {
// dont want to check in the method like below
if(checkPerms("ReadIn
我读到了这个关于组合而不是继承的,在这个例子中,他们使用了一个抽象类。假设您希望完全避免使用抽象类,并且只使用具体的类。我想知道,我的例子是作文的恰当运用吗?假设我有下面的IGameobject接口。
public interface IGameObject
{
string Name {get;}
}
以及折叠武器接口:
//Note the IGameObject getter
public interface IWeapon
{
int Damage {get; }
IGameObject g
我已经阅读了很多文章,并且理解装饰模式应该为现有的对象添加功能。然而,我有一个场景,一种行为被替换,而不是扩展。为了演示,假设我有以下这些类:
public interface IDoStuff {
string DoStuff();
string DoOtherStuff();
}
public class A : IDoStuff {
public A(){}
public string DoStuff() {
....
}
public string DoOtherStuff() {
....
}
对于这种模式的使用是否有任何严格和快速的规则,或者仅仅是为了在不使用继承的情况下实现方法调用中的附加功能?
我已经修改了下面的例子,我从一个这样的帖子,以表明我正在考虑的。
public interface Coffee {
public double getCost();
public String getIngredients();
}
public class SimpleCoffee implements Coffee {
@Override
public double getCost() {
return 1;
}
@Overr
有人能为我详细介绍一下Bridge设计模式和Decorator模式吗?我发现它在某种程度上很相似。我不知道该如何区分它?
我的理解是,在Bridge中,它将实现从接口中分离出来,通常你只能应用一个实现。装饰器是一种包装器,你可以包装尽可能多的东西。
例如,
桥接模式
class Cellphone {
private:
Impl* m_OS; // a cellphone can have different OS
}
装饰器模式
class Shirt {
private:
Person * m_p; //put a shirt on the perso
我看到有人写了一个类似如下的POJO类:
class A{
someVariables...
}
class B extends A{
A a = new A();
someVariables...
}
我非常确信这不是一个明智的创建类的方法,因为当两个变量都打算存储相同的值时,它会导致数据完整性问题(继承的变量和对象'A‘的变量可以有不同的值)。每次如果有人更新任何变量,他都必须在两个地方更新它。我很感激有人能在这方面启发我,并告诉我在哪里可以明智地创建这样的class...Pros和缺点将工作。
我正在尝试理解Decorator模式,并且我已经在SO上阅读了其他相关问题,然后我决定用一个简单的例子来尝试它(我是PHP新手):
interface iTitle {
public function getTitle();
}
class Title implements iTitle {
protected $_text;
public function __construct() {
$this->_text='Our page';
}
public function getTitle() {
return