Design Patterns-abstractfactory patterns
1. Replace the abstract base class in the factory mode with the interface class. The difference is that the abstract base class cannot be instantiated, while the interface class can.
For example, replacing a car with a 4S shop,
Class car 4s stores{Public:Automobile 4S stores ();Vitrual ~ Automobile 4S stores ();
Virtual ti
Create bean Factory all useFactory methodFor the production of fixed products in the same grade structure support to increase any productAbstract FactoryAll products for the production of different product familiesAbstract product family can be added to the inability of the productPrototype mode (copy, clone)You need to implement the Cloneable interface using the Clone () method to copy a close () method such as a file streamCreating an object with new requires very tedious data preparation or
implementation is packaged into a class, if there are many alternative strategies, then the number of these classes is very large.To recognize a policy pattern from a code perspective:(Zhao Yun with three tricks to solve the problem, there are three elements in this scene: Three ingenious tricks, one capsule, one Zhao Yun)1. First create a policy interface (contains an algorithm that can be executed by each of the tips)2. Then write three implementation classes, because there are three clever t
of the current object */
Bytearrayoutputstream BOS = new Bytearrayoutputstream ();
ObjectOutputStream oos = new ObjectOutputStream (BOS);
Oos.writeobject (this);
/* read out the new object generated by the binary stream */
Bytearrayinputstream bis = new Bytearrayinputstream (Bos.tobytearray ());
ObjectInputStream ois = new ObjectInputStream (bis);
return Ois.readobject ();
}
Public String getString () {
return string;
}
public void SetString (string string) {
, filterinputstream,filteroutputstream
Concretedecorate Specific Decorative roles: responsible for adding new responsibilities to component objects, Bufferedinputstream,bufferedoutputstream, etc.
Advantages
Extended object functionality is more flexible than inheritance and does not result in a dramatic increase in the number of classes.
You can decorate an object multiple times, creating a combination of different behaviors and getting more powerful objects.
The concre
observer;/** * Specific observer classes, such as LV Zeng in the example, Zhang Wei is an example of the Observer * @author WL * */public class Concretewatcher implements watcher { String Watcheredname; String Name;public concretewatcher (String name,string watcheredname) {this.name=name;this.watcheredname= Watcheredname;} @Overridepublic void Updata (String str) {System.out.println (name+ "Heart secretly happy" Hey!!! The opportunity came, my "+watcheredname+" said she ' "+str+" ' "");}Package
);/** * update Price */ Food.setprice (1.5f);}}third, the application scenarioGUI frame, meteorological observation, etc.Iv. SummaryBe sure to call the Setchanged () method before notifying all observers to set the state of the observer to be changed so that notifyobservers () will not be updated with the Observer Update method. If there are different opinions or omissions in the above content, please give us some valuable suggestions or comments.Finally, you can try to use the following UML mod
();
}
}
}
public class Mysubject extends Abstractsubject {
@Override
public void operation () {
System.out.println ("Update self!");
Notifyobservers ();
}
}
Test class:
public class Observertest {
public static void Main (string[] args) {
Subject sub = new Mysubject ();
Sub.add (New Observer1 ());
Sub.add (New Observer2 ());
Sub.operation ();
}
}
Output:Update self!Observer1 has rece
There are many similarities between structural patterns because there are several relationships in the object model structure: inheritance and implementation between classes, plus object combinations, which are the main purposes of the PHP design pattern.
The greatest advantage of the combination of objects is that you can build a relationship based on configuration at run time without modifying the actual
;}}
2 , client-side code
static void Main (string[] args){Singleton Singleton2 = Singleton.getinstance ();Singleton Singleton3 = Singleton.getinstance ();if (Singleton2 ==singleton3){Console.WriteLine ("Instance Singleton2 is the same as instance Singleton3! ");}Console.readkey ();}
The singleton pattern can also be used without shackles, such as using the three-layer technology call class in a class:#region get its own singleton mode: UserInfo
relatively single; when we find that a class takes on too many tasks, Too miscellaneous should assign some responsibilities to other classes, so as to guarantee the high cohesion of the design scheme
Controller mode: The controller mode requires that the coordinate processing system messages be assigned to different control classes
Polymorphism: When a duty behaves differently in different derived classes, we can use polymorphic
implementation is just a common Java class, as long as the basic needs of the singleton, you can do in the arbitrary implementation of some other functions, but static class does not. From the above summary, the basic can see the difference between the two, but, on the other hand, we finally realized that the singleton pattern, the interior is a static class to achieve, so, the two have a great correlation, but we consider the level of the problem is different. The combination of two ideas to c
I. Description of the pattern
There are a series of objects in my program, like we're going to have a bowl of rice, a cup of coffee (Coffee) ..., to take advantage of them, we have to generate them in the program according to the user's requirements, and then call the new operator one at a, This way the client will know the corresponding class information, the generated code is obviously not flexible. So we can not use the specific classes in the code, but just to show what we need, and then we
object is often subject to drastic changes, however, the algorithms that combine sub-objects in each part are relatively stable. To put it simply, sub-objects change frequently and are relatively stable for the combined sub-object algorithm.This is a solution to the creation of a complex object. The changed part and the relatively stable part have been clarified. What we need to do is to isolate the change and how to isolate the sub-objects from the algorithm is a problem to be solved.In
Bridge)The bridge mode is used to solve the problem of multi-dimensional changes of the system. It separates the abstract part from the implementation part so that they can all change independently. (See the understanding of the Bridge Mode)Structure:Examples in life:
Composite)
Intent:Combine objects into a tree structure to represent the "part-whole" hierarchy. The composite mode ensures consistency between the use of a single object and a composite object. [Gof
Looking at "C + + Design new thinking", found in the beginning of a large length of the introduction of the Strategy Model (policy), the strategy model is not a classic design pattern, but in fact, in our day-to-day development is essential. Policy, strategy, policy, the meaning here is that the complex function of the class as far as possible to split into a single function of a simple class combination, s
):def __init__(self): Self.name='Processserver'self.state=state.newdefboot (self):Print('booting the {}'. Format ( self) self.state=state.runningdefKill (Self, restart=True):Print('killing {}'. Format ( self) self.state= Stae.restartifRestartElseState.zobmiedefcreate_process (self, user, name):Print("trying to create process ' {} ' for user ' {} '". Format (name, user)classWindowsServer:PassclassNetworkserver:PassclassOperatingSystem:def __init__(self): Self.fs=fileserver () self.ps=Processserve
(String Person: This. Getfriends ()) {List.add (person); } //frend.setfriends (list); returnfrend; } Catch(clonenotsupportedexception e) {e.printstacktrace (); return NULL; } }} PackageChenyang;Importjava.util.ArrayList;Importjava.util.List;/*** Text of the test class * *@author65245 **/ Public classText { Public Static voidMain (string[] args) {//1. Create a direct assignment to the collectionPerson person =NewPerson (); ListNewArraylist(); List.add ("Hello"); List.add
The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion;
products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the
content of the page makes you feel confusing, please write us an email, we will handle the problem
within 5 days after receiving your email.
If you find any instances of plagiarism from the community, please send an email to:
info-contact@alibabacloud.com
and provide relevant evidence. A staff member will contact you within 5 working days.